package com.ctshk.rpc.goods.service;

import com.alibaba.fastjson.JSONObject;
import com.ctshk.common.model.PageResponse;
import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.goods.dto.FreightTemplateDTO;
import com.ctshk.rpc.goods.req.FreightTemplateAddReq;
import com.ctshk.rpc.goods.req.FreightTemplatePageReq;

import java.util.List;


/**
 * <p>
 * 运费模板 服务类
 * </p>
 *
 * @author 姜斌文
 * @since 2021-04-09
 */
public interface IFreightTemplateService {


	/**
	 * 新增运费模板分类
	 * @param addReq 运费模板分类入参对象
	 * @param userId 用户ID
	 * @throws Exception 異常
	 */
	void addFreightTemplate(FreightTemplateAddReq addReq, Long userId) throws Exception;
	
	/**
	 * 编辑运费模板分类
	 * @param addReq 更新运费模板分类入参对象
	 * @param userId 用户ID
	 * @throws Exception  異常
	 */
	void updateFreightTemplate(FreightTemplateAddReq addReq, Long userId) throws Exception;
	
	/**
	 * 删除运费模板分类
	 * @param delReq 更新运费模板分类入参对象
	 * @param userId 用户ID
	 * @throws Exception  異常
	 */
	void deleteFreightTemplate(FreightTemplateAddReq delReq, Long userId) throws Exception;
	
	/**
     * 运费模板分类管理列表查询
     * @param pageReq  分页条件入参
     * @param tokenUser  登录用户
     * @return 运费模板分类管理分页列表
     */
    PageResponse<FreightTemplateDTO> findFreightTemplate(FreightTemplatePageReq pageReq, TokenUser tokenUser);

	/**
	 * 查询运费模板下拉列表
	 * @return List费模板列表
	 */
	List<FreightTemplateDTO> findClassificationTemplateList();

	/**
	 * 根據模板ID計算運費
	 * @param id 運費模板ID
	 * @param firstArticles 首件（首重），當為計重方式計算時,以集合中的數據值為准；當為計件方式計算時，List集合的size為件數
	 * @param regionId 區域ID，指定要快遞的區域，不同區域運費不一樣
	 * @return
	 */
	JSONObject getFreightByWeightOrPieceCount(Long id, List<Double> firstArticles, Long regionId);

	/**
	 * 根据ID查询运费模板详情
	 * @param id 运费模板ID
	 * @return
	 */
	FreightTemplateDTO findFrightTemplateInfoById(Long id);
}
